package logging

import (
	"fmt"
	"github.com/sirupsen/logrus"
	"hc_server/pkg/setting"
	"os"
	"path"
	"runtime"
	"time"
)

func Setup() {
	// 设置日志格式为 JSON，这样我们可以自定义更多的字段
	logrus.SetFormatter(&logrus.TextFormatter{
		TimestampFormat: time.RFC3339Nano, // 设置时间格式为 RFC3339Nano，例如："2006-01-02T15:04:05Z07:00"
		FullTimestamp:   true,             // 显示完整的时间戳
		CallerPrettyfier: func(f *runtime.Frame) (string, string) {
			// 自定义调用者的显示格式
			filename := path.Base(f.File)
			return fmt.Sprintf("%s()", f.Function), fmt.Sprintf("%s:%d", filename, f.Line)
		},
	})

	// 自定义 callerPrettyfier 来格式化调用者信息
	logrus.SetReportCaller(true)

	logfile, _ := os.OpenFile(getLogrusPathName(), os.O_CREATE|os.O_RDWR|os.O_APPEND, 0644)
	logrus.SetOutput(logfile)
}

func getLogrusPathName() string {
	return fmt.Sprintf("%s%s.%s", setting.GetConfig().App.LogSavePath, setting.GetConfig().App.LogSaveName, setting.GetConfig().App.LogFileExt)
}
